It is frequently necessary or desirable to insert a synchronization character in a data stream. For example, a FibreChannel specification requires the use of such a synchronization character. When a data stream containing a required synchronization character is detected by a FibreChannel compatible device, the device locks onto the data stream and is synchronized therewith.
In order to deserialize a bitstream made up of, for example, a plurality of parallel data streams, it is necessary to initially synchronize the deserializer device with the input stream, so that the deserializer can determine which portion of the serial bitstream corresponds to the first parallel input, which portion to the second input, and the like. Different data formats utilize different synchronization characters, and there are several considerations relevant to the determination of the size and configuration of a synchronization character. Among these considerations are that the synchronization character should be unlike any character that is likely to occur in the regular data stream, and also that DC balance is maintained by keeping a generally equally quantity of ones and zeros, since an excess of either will cause an instantaneous blockage due to inherent capacitance in the transmission means and will, therefore, restrict the speed of transmission at least on copper (as opposed to fiber optic) transmission lines. An excellent discussion of synchronization characters and the relevant considerations is found in U.S. Pat. No. 4,975,916 issued to Miracle et al.
It would be desirable to make data communications devices such that they could communicate with many different types of such devices using a great variety of data formats and data transmission protocols. However, no prior art method has effectively provided for the synchronization of high speed asynchronous serial data in the many various data formats and transmission protocols currently in use and which might be developed in the future.